home *** CD-ROM | disk | FTP | other *** search
/ Aminet 28 / Aminet 28 (1998)(GTI - Schatztruhe)[!][Dec 1998].iso / Aminet / util / rexx / AppLauncher.lha / AppLauncher / AppLauncher.rexx < prev    next >
Encoding:
OS/2 REXX Batch file  |  1998-09-26  |  4.3 KB  |  140 lines

  1. /* $VER: AppLauncher.rexx 1.7 (26.9.98) (W) by Martin Steigerwald
  2. */
  3.  
  4. PARSE ARG appname ' ' files
  5.  
  6. OPTIONS RESULTS
  7.  
  8. IF ~SHOW('l','rexxsupport.library') THEN CALL ADDLIB('rexxsupport.library',0,-30)
  9.  
  10. configname='S:AppLauncher.cfg'
  11. cmdprefix='C:RUN <>NIL: '
  12.  
  13. appmax=ReadConfig()
  14. IF appmax>0 THEN DO
  15.     IF StartApp()=0 THEN DO
  16.         SAY 'Something went wrong with "' || appname || '"!'
  17. END
  18.  
  19. EXIT
  20.  
  21. StartApp: PROCEDURE EXPOSE app. appname appmax cmdprefix files
  22.     gefunden=0
  23.     erfolg=0
  24.     DO i=1 to appmax
  25.         IF UPPER(appname) == UPPER(app.i.name) THEN DO
  26.             gefunden=1
  27.             LEAVE
  28.         END
  29.     END /* DO */
  30.     IF gefunden=1 THEN DO
  31.         a=RIGHT(app.i.pathname,1)
  32.         IF (a~==':' & a~=='/') THEN DO
  33.             app = app.i.pathname || "/" || app.i.filename
  34.         END
  35.         ELSE DO
  36.             app = app.i.pathname || app.i.filename
  37.         END
  38.         alterpfad=PRAGMA('DIRECTORY')
  39.         dummy=PRAGMA('DIRECTORY',app.i.pathname)
  40.         alterstack=0
  41.         IF app.i.stack > 4096 THEN DO
  42.             alterstack=PRAGMA('STACK', app.i.stack)
  43.         END
  44.         IF ~SHOW('P', app.i.portname) THEN DO
  45.             ADDRESS COMMAND cmdprefix || app
  46.             ADDRESS COMMAND 'WaitForPort' app.i.portname
  47.         END
  48.         dummy=PRAGMA('DIRECTORY', alterpfad)
  49.         ADDRESS VALUE app.i.portname
  50.         files=STRIP(files)
  51.         DO UNTIL files==''
  52.             IF LEFT(files,1)=='"' THEN DO
  53.                 PARSE VAR files '"' file '"' files
  54.             END
  55.             ELSE DO
  56.                 PARSE VAR files file ' ' files
  57.             END
  58.             file=STRIP(file)
  59.             IF UPPER(file)=="TOFRONT" THEN DO
  60.                 IF app.i.tofrontcmd ~== "" THEN DO
  61.                     app.i.tofrontcmd
  62.                 END
  63.                 ELSE DO
  64.                     SAY "Command to bring application to front is not configured!"
  65.                 END
  66.             END
  67.             ELSE DO
  68.                 IF app.i.filenameprefix ~== '' THEN DO
  69.                     app.i.loadcmd '"'app.i.filenameprefix || file'"'
  70.                 END
  71.                 ELSE DO
  72.                     app.i.loadcmd '"'file'"'
  73.                 END
  74.                 erfolg=1
  75.             END
  76.         END
  77.         ADDRESS
  78.         dummy=PRAGMA('DIRECTORY', alterpfad)
  79.         IF alterstack > 0 THEN DO
  80.             PRAGMA('STACK', alterstack)
  81.         END
  82.     END /* IF gefunden */
  83.     ELSE DO
  84.         SAY 'Didnt find application "' || appname || '" in my config file!'
  85.     END /* ELSE */
  86. RETURN erfolg
  87.  
  88. ReadConfig: PROCEDURE EXPOSE app. configname
  89.     IF OPEN('configfile', configname, 'R') THEN DO
  90.         i=0
  91.         linenr=0
  92.         DO UNTIL EOF('configfile')
  93.             line=STRIP(READLN('configfile'))
  94.             linenr=linenr+1
  95.             SELECT
  96.                 WHEN LEFT(line,1)=='[' THEN DO
  97.                     i=i+1
  98.                     PARSE VAR line '[' app.i.name ']'
  99.                     app.i.pathname=''
  100.                     app.i.tofrontcmd=''
  101.                     app.i.loadcmd=''
  102.                     app.i.filenameprefix=''
  103.                     app.i.stack=0
  104.                 END /* WHEN */
  105.                 WHEN line == '' THEN DO
  106.                     NOP
  107.                 END /* WHEN */
  108.                 OTHERWISE DO
  109.                     PARSE VAR line option '=' setting
  110.                     option = UPPER(STRIP(option))
  111.                     setting = STRIP(setting)
  112.                     SELECT
  113.                         WHEN option == 'PORTNAME' THEN app.i.portname = setting
  114.                         WHEN option == 'TOFRONTCMD' THEN app.i.tofrontcmd = setting
  115.                         WHEN option == 'LOADCMD' THEN app.i.loadcmd = setting
  116.                         WHEN option == 'FILENAME' THEN app.i.filename = setting
  117.                         WHEN option == 'PATHNAME' THEN app.i.pathname = setting
  118.                         WHEN option == 'FILENAMEPREFIX' THEN app.i.filenameprefix = setting
  119.                         WHEN option == 'STACK' THEN app.i.stack = setting
  120.                         OTHERWISE SAY 'Unknown config option in line ' || linenr || '!'
  121.                     END /* SELECT */
  122.                 END /* OTHERWISE */
  123.             END /* SELECT */
  124.         END
  125.         CLOSE('configfile')
  126.     END
  127.     ELSE DO
  128.         SAY 'Couldnt load configfile "' || configname || '"!'
  129.     END
  130. RETURN i
  131.  
  132. FindApp: PROCEDURE EXPOSE app. configname
  133.     erfolg=0
  134.     IF EXISTS(configname) THEN DO
  135.         erfolg=1
  136.     END
  137.  
  138. RETURN erfolg
  139.  
  140.